连杆有向包围盒(OBB)开发介绍

修订日期 修订版 修订内容 修订人
2023.7.20 v0.1 初始化文档 舒瑞

1 功能描述

包围盒:OBB包围盒是一个可以根据物体方向和姿态进行旋转的三维边界框,用于完全包围一个三维物体或物体集合,在机械臂自碰撞检测与路径规划中发挥重要作用.

定义:OBB包围盒由三个相互垂直的轴(通常是物体的局部坐标轴),一个中心点和三个方向长度定义.

解决问题:

给定机械臂STL描述文件和各关节角度

  • 输出OBB包围盒在局部坐标系下的中心位置,姿态,以及半长、半宽、半高.
  • 输出OBB包围盒在基座标系下的中心位置,姿态,以及半长、半宽、半高.

2 接口介绍

/**
     * @brief 获得连杆的OBB信息
     * @param link_name: 连杆名
     * @return 连杆的OBB模型
     */
    ARAL_API_COMMON(1.0) OBBPairs mdlGetLinkOBBModel(const std::string& link_name)const = 0;

用户可以动态调用该接口, 通过给定连杆名称,获取连杆OBB模型在局部坐标系下的描述.

/**
     * @brief 获得某个构型下的所有连杆OBB模型
     * @param q_in: 机器人构型参数(关节角)
     * @param real_fk: 基于理论 (false) / 实际 DH(true) 参数
     * @return 所有连杆的OBB模型在基坐标系下的描述
     */
    ARAL_API_COMMON(1.0) std::vector<OBBPairs> mdlGetLinkOBBModels(const interface::RLJntArray& q_in, const bool real_fk)const = 0;

用户可以动态调用该接口, 通过给定机械臂关节角度,DH参数,获取连杆OBB模型在基座标系下的描述.

3 开发历程

//机械臂型号配置
Setup("aubo_i5");
interface::RLJntArray linkmass_ref {5.05, 11.28, 2.88, 1.62, 1.62, 0.5}; //初始化关节角

//获取连杆OBB模型
auto names = robot->mdlGetLinkName();
for(auto name : names)
    robot->mdlGetLinkOBBModel(name);

//获取OBB模型在基座标系下的描述
auto res = robot->mdlGetLinkOBBModels(linkmass_ref, true);
CHECK(res.size() == names.size()-2);

4 包围效果

对aubo-i5机械臂各连杆进行OBB包围操作,包围效果可视化如图1所示.

图1 aubo-i5的OBB包围盒效果

results matching ""

    No results matching ""